<?php
/**
 * Created by PhpStorm.
 * User: 钊鑫
 * Date: 2019/2/26
 * Time: 10:18
 */
namespace app\api\controller;

use Zzx\wxpay\lib as WxPayLib;
use Zzx\wxpay\example as WxPayExample;
use PHPQRCode\QRcode;

class Wxpay {
    public function __construct() {
        //a:5:{s:5:"appid";s:18:"wxdc25f2bdbd6b911d";s:5:"mchid";s:10:"1275166901";s:3:"key";s:32:"EWR34df5fgsYH57754DF5Gdfgds56dsf";s:9:"appsecret";s:32:"ef4688d7161cfe329bfbb8a3b7b3bdb7";s:6:"smchid";s:0:"";}
        $WxPayConfig = new WxPayLib\WxPayConfig();
        $WxPayConfig::$appid = 'wxdc25f2bdbd6b911d'; // * APPID：绑定支付的APPID（必须配置，开户邮件中可查看）
        $WxPayConfig::$mchid = '1275166901'; // * MCHID：商户号（必须配置，开户邮件中可查看）
        $WxPayConfig::$key = 'EWR34df5fgsYH57754DF5Gdfgds56dsf'; // KEY：商户支付密钥，参考开户邮件设置（必须配置，登录商户平台自行设置）
        $WxPayConfig::$appsecret = 'ef4688d7161cfe329bfbb8a3b7b3bdb7'; // 公众帐号secert（仅JSAPI支付的时候需要配置)，
        $WxPayConfig::$app_type = '';
        $WxPayConfig::$apiclient_cert = '';
        $WxPayConfig::$apiclient_key = '';
    }

    /**
     * 生成支付代码
     * @param   array   $order      订单信息
     * @param   array   $config    支付方式信息
     */
    public function getCode()
    {
        $notify_url = SITE_URL . '/index.php/Home/Payment/notifyUrl/pay_code/weixin'; // 接收微信支付异步通知回调地址，通知url必须为直接可访问的url，不能携带参数。
        new WxPayLib\WxPayDataBase();
        $input = new WxPayLib\WxPayUnifiedOrder();
        $input->SetBody('111'); // 商品描述
        $input->SetAttach("weixin"); // 附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据
        $input->SetOut_trade_no(time()); // 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
        $input->SetTotal_fee('10' * 100); // 订单总金额，单位为分，详见支付金额
        $input->SetNotify_url($notify_url); // 接收微信支付异步通知回调地址，通知url必须为直接可访问的url，不能携带参数。
        $input->SetTrade_type("NATIVE"); // 交易类型   取值如下：JSAPI，NATIVE，APP，详细说明见参数规定    NATIVE--原生扫码支付
        $input->SetProduct_id("123456789"); //
        // 商品ID trade_type=NATIVE，此参数必传。此id为二维码中包含的商品ID，商户自行定义。
        $notify = new WxPayExample\NativePay();
        $result = $notify->GetPayUrl($input); // 获取生成二维码的地址
        $url2 = $result["code_url"]; //微信支付链接
        echo $this->createPrCode($url2);
//        if (empty($url2))
//            return '没有获取到支付地址, 请检查支付配置' . print_r($result, true);
//        echo '<img alt="模式二扫码支付" src="/index.php?m=Home&c=Index&a=qr_code&data='.urlencode($url2).'" style="width:110px;height:110px;"/>';
    }

    public function createPrCode($data){
        $qr_code_path = UPLOAD_PATH.'qr_code/';
        if(!file_exists($qr_code_path)){
            mkdir($qr_code_path);
        }
        $qr_code_file = $qr_code_path.time().rand(1,10000).'.png';
        $code = new QRcode();
        $code->png($data,$qr_code_file);
        echo '<img alt="模式二扫码支付" src="'.SITE_URL.'/'.$qr_code_file.'" style="width:110px;height:110px;"/>';
        //$qrHandle = imagecreatefromstring(file_get_contents($qr_code_file));
        unlink($qr_code_file); //删除二维码文件
//        header("Content-type: image/png");
//        imagepng($qrHandle);
//        imagedestroy($qrHandle);
        exit;
    }
}